目录前言一const的基本概念二const修饰基本数据类型2.1const修饰一般常量及数组2.2const修饰指针(*)2.2.1常量指针2.2.2指向常量的指针(指针常量)2.2.3总结2.2.4具体举例三const修饰函数3.1const修饰函数参数3.1.1如果参数为指针3.1.2如果参数为引用3.2const修饰函数返回值3.2.1值传递3.2.2返回值为指针3.2.3返回值为引用3.3const修饰成员函数const函数的规则四类中定义变量(const的特殊用法)4.1使用枚举类型4.2使用const或static4.3总结五使用const的好处六const在C和C++中的区别参考
前言在上一篇文章中,我们介绍了&运算符的基础用法,本篇文章,我们将介绍&运算符的一些高级用法。一、人物简介第一位闪亮登场,有请今后会一直教我们C语言的老师——自在。第二位上场的是和我们一起学习的小白程序猿——逍遥。二、位掩码位掩码是一种用于按位操作的技术它通过使用一个二进制数(掩码)来屏蔽或保留目标数中的一些特定位例如,如果要将一个无符号整数的最高位清零,可以使用以下代码:#includeintmain(){ unsignedintx=0xABCD1234;//0b10101011110011010001001000110100 x&=~(1U1U表示将一个无符号整数的最高位设置为1~(1U取
前言在上一篇文章中,我们介绍了&运算符的基础用法,本篇文章,我们将介绍&运算符的一些高级用法。一、人物简介第一位闪亮登场,有请今后会一直教我们C语言的老师——自在。第二位上场的是和我们一起学习的小白程序猿——逍遥。二、位掩码位掩码是一种用于按位操作的技术它通过使用一个二进制数(掩码)来屏蔽或保留目标数中的一些特定位例如,如果要将一个无符号整数的最高位清零,可以使用以下代码:#includeintmain(){ unsignedintx=0xABCD1234;//0b10101011110011010001001000110100 x&=~(1U1U表示将一个无符号整数的最高位设置为1~(1U取
原创:扣钉日记(微信公众号ID:codelogs),欢迎分享,转载请保留出处。简介要说Java中什么异常最容易出现,我想NullPointerException一定当仁不让,为了解决这种null值判断问题,Java8中提供了一个新的工具类Optional,用于提示程序员注意null值,并在特定场景中简化代码逻辑。比如下面一段取深层属性值的代码:Orderorder=getOrderById(orderId);StringuserCode="";if(order!=null){if(order.getUser()!=null){if(order.getUser().getUserCode()!=
原创:扣钉日记(微信公众号ID:codelogs),欢迎分享,转载请保留出处。简介要说Java中什么异常最容易出现,我想NullPointerException一定当仁不让,为了解决这种null值判断问题,Java8中提供了一个新的工具类Optional,用于提示程序员注意null值,并在特定场景中简化代码逻辑。比如下面一段取深层属性值的代码:Orderorder=getOrderById(orderId);StringuserCode="";if(order!=null){if(order.getUser()!=null){if(order.getUser().getUserCode()!=
一、概述Field是一个类,位于java.lang.reflect包下。在Java反射中Field类描述的是类的属性信息,功能包括:获取当前对象的成员变量的类型对成员变量重新设值二、如何获取Field类对象getField(Stringname):获取类特定的方法,name参数指定了属性的名称Class.getFields():获取类中public类型的属性,返回一个包含某些Field对象的数组,该数组包含此Class对象所表示的类或接口的所有可访问公共字段getDeclaredField(Stringname):获取类特定的方法,name参数指定了属性的名称getDeclaredFields
一、概述Field是一个类,位于java.lang.reflect包下。在Java反射中Field类描述的是类的属性信息,功能包括:获取当前对象的成员变量的类型对成员变量重新设值二、如何获取Field类对象getField(Stringname):获取类特定的方法,name参数指定了属性的名称Class.getFields():获取类中public类型的属性,返回一个包含某些Field对象的数组,该数组包含此Class对象所表示的类或接口的所有可访问公共字段getDeclaredField(Stringname):获取类特定的方法,name参数指定了属性的名称getDeclaredFields
大家好,又见面了。本文是笔者作为掘金技术社区签约作者的身份输出的缓存专栏系列内容,将会通过系列专题,讲清楚缓存的方方面面。如果感兴趣,欢迎关注以获取后续更新。通过前面的文章,我们一起剖析了GuavaCache、Caffeine、Ehcache等本地缓存框架的原理与使用场景,也一同领略了以Redis为代表的集中式缓存在分布式高并发场景下无可替代的价值。现在的很多大型高并发系统都是采用的分布式部署方式,而作为高并发系统的基石,缓存是不可或缺的重要环节。项目中使用缓存的目的是为了提升整体的运算处理效率、降低对外的IO请求,而集中式缓存是独立于进程之外部署的远端服务,需要基于网络IO的方式交互。如果一
大家好,又见面了。本文是笔者作为掘金技术社区签约作者的身份输出的缓存专栏系列内容,将会通过系列专题,讲清楚缓存的方方面面。如果感兴趣,欢迎关注以获取后续更新。通过前面的文章,我们一起剖析了GuavaCache、Caffeine、Ehcache等本地缓存框架的原理与使用场景,也一同领略了以Redis为代表的集中式缓存在分布式高并发场景下无可替代的价值。现在的很多大型高并发系统都是采用的分布式部署方式,而作为高并发系统的基石,缓存是不可或缺的重要环节。项目中使用缓存的目的是为了提升整体的运算处理效率、降低对外的IO请求,而集中式缓存是独立于进程之外部署的远端服务,需要基于网络IO的方式交互。如果一
摘要:AQS的全称为(AbstractQueuedSynchronizer),AQS是一个用来构建锁和同步器的框架,使用AQS能简单且高效地构造出应用广泛的大量的同步器。本文分享自华为云社区《【高并发】AQS中的CountDownLatch、Semaphore与CyclicBarrier核心用法》,作者:冰河。AQS的全称为(AbstractQueuedSynchronizer),AQS是一个用来构建锁和同步器的框架,使用AQS能简单且高效地构造出应用广泛的大量的同步器。本文主要讲述AQS中的CountDownLatch、Semaphore与CyclicBarrier核心用法。CountDow